package com.tedu.day02.test;

/**
 *               普通类   抽象类   接口类
 *                 【关系】    【特点】
 *   类与类           继承      只能单继承、可多层继承
 *   类与抽象类        继承      可以单继承，不可以多继承
 *   抽象类与抽象类     继承      只能单继承、可多层继承
 *   类与接口          实现      可以单继承，也可以多实现
 *                             并且继承同时实现多个接口
 *   接口与接口        继承      可以单继承，可以多继承
 */
/*作业1：抽象类与接口的区别和关系？简答*/
/*区别：
①抽象类的关键字是abstract；接口的关键字是interface
②抽象类可以包含抽象方法和具体方法；接口只有抽象方法和常量
③抽象类有成员变量和构造方法；接口没有成员变量和构造方法
④抽象类的子类用关键字extends来继承；接口用关键字implements来实现接口
⑤抽象类的一个类只能继承一个抽象类（单继承）；接口的一个类可以实现多个接口（多继承）
⑥抽象类可以使用的修饰符有public、默认的、protected；接口默认使用public
⑦抽象类有静态方法；接口没有静态方法
⑧抽象类存在构造器；接口没有构造器
⑨抽象类可以定义方法，也可以实现方法；接口只能定义方法
⑩抽象类的成员变量可以是多样的，接口的成员变量只能是常量
 */
/*关系：
①抽象类可以实现接口，但接口不可以实现抽象类
②抽象类更侧重于提供一种部分实现的抽象，接口提供了一种完全抽象的契约
③两者都不可以直接被实例化
④抽象类的子类和接口的实现类都只有实现类方法后才能被实例化
⑤两者都可以定义抽象方法，但是子类必须重写
 */




//5.接口与接口：继承---可以单继承，可以多继承
interface Loo{}  interface Foo{}
interface Voo extends Loo,Foo{}

//4.类与接口：实现---可以单继承，也可以多实现
//interface Loo{}  interface Foo{}
//class Joo{}
//class Voo extends Joo implements Loo,Foo{}

//3.抽象类与抽象类:继承---只能单继承、可多层继承
//  abstract class Loo{}
//  abstract class Voo extends Loo{}
//  abstract class Uoo extends Voo{}

//2.类与抽象类：继承---可以单继承，不可以多继承
//abstract class Uoo{} abstract class Voo{}
//class Loo extends Uoo,Voo{}

//1.类与类：继承---单继承,可以多层继承
//class Uoo{}
//class Loo extends Uoo{}
//class Voo extends Loo{}






public class 关系 {
}
